home *** CD-ROM | disk | FTP | other *** search
/ Alles Voor Internet / Tout Pour Internet / alles voor internet.iso / MacInternet™ / Telnet / NCSA / tn3270 2.3d26 source / tn3270 tools / genktab.c < prev    next >
C/C++ Source or Header  |  1991-01-21  |  4KB  |  144 lines

  1. /*
  2.  *  tn3270 for the Macintosh Source Code
  3.  *  Brown University Computing and Information Services
  4.  *  Version 2.3d21, January 17, 1991
  5.  *  Copyright (c) 1988, 1989, 1990, 1991 by Brown University and by
  6.  *  Peter John DiCamillo.
  7.  *
  8.  *  Permission is granted to any individual or institution to use, copy,
  9.  *  or redistribute the binary version of this software and its
  10.  *  documentation provided this notice and the copyright notices are
  11.  *  retained.  Permission is granted to any individual or non-profit
  12.  *  institution to use, copy, modify, or redistribute the source files
  13.  *  of this software provided this notice and the copyright notices are
  14.  *  retained.  This software may not be distributed for profit, either
  15.  *  in original form or in derivative works, nor can the source be
  16.  *  distributed to other than an individual or a non-profit institution.
  17.  *  Any  individual or group interested in seeing and/or using these
  18.  *  source files but who are prevented from doing so by the above
  19.  *  constraints should contact Don Wolfe, Assistant Vice-President for
  20.  *  Computer Systems at Brown University, (401) 863-7250, for possible
  21.  *  software licensing of the source developed at Brown.
  22.  *
  23.  *  Brown University and Peter John DiCamillo make no representations
  24.  *  about the suitability of this software for any purpose.
  25.  *
  26.  *  BROWN UNIVERSITY AND PETER JOHN DICAMILLO GIVE NO WARRANTY, EITHER
  27.  *  EXPRESS OR IMPLIED, FOR THE PROGRAM AND/OR DOCUMENTATION PROVIDED,
  28.  *  INCLUDING, WITHOUT LIMITATION, WARRANTY OF MERCHANTABILITY AND
  29.  *  WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE.
  30.  *
  31.  */
  32.  
  33. #include <stdio.h>
  34.  
  35. unsigned char codeline[128];
  36. unsigned char typebuff[256];
  37. unsigned char databuff[256];
  38. unsigned char aplbuff[256];
  39. unsigned char hexbuff[8];
  40. unsigned char outline[128];
  41.  
  42. main()
  43. {
  44. int i, j, index, i1, i2, lnum;
  45. char * rc;
  46. unsigned char s1[64];
  47. unsigned char s2[64];
  48. unsigned char s3[64];
  49. unsigned char type, val, apl, ge;
  50. FILE *infile, *outfile, *namefile;
  51. char * myfgets(char *, int, FILE *);
  52.  
  53. for (i=0; i < 256; i++) 
  54.     typebuff[i] = databuff[i] = aplbuff[i] = 0;
  55.  
  56. infile = fopen("keycodes.memo", "r");
  57. if (infile == 0) {
  58.     printf("Error opening keycodes.memo\n");
  59.     return;
  60.     }
  61.     
  62. namefile = fopen("kbnames.new", "w");
  63. if (namefile == 0) {
  64.     printf("Error creating kbnames.new\n");
  65.     return;
  66.     }
  67. fprintf(namefile, "static unsigned char * namelist[] = {\n");
  68.  
  69. rc = fgets(codeline, 128, infile);    /* skip first line */
  70. rc = fgets(codeline, 128, infile);
  71. lnum = 2;
  72. index = 0;
  73. while (rc != 0) {
  74.     sscanf(codeline,
  75.     "%s %x %x %s %s",
  76.     s1, &i1, &i2, s2, s3);
  77.     type = s1[0];
  78.     val = i1;
  79.     apl = i2;
  80.     ge = s2[0];
  81.     fprintf(namefile, "\t/* %03d */\t\"%s\",\n", index, s3);
  82.     switch(type) {
  83.         case 'D':    typebuff[index] = 1;
  84.                 if (ge == 'Y') typebuff[index] += 0x80;
  85.                 break;
  86.         case 'L':    typebuff[index] = 0x41;    /* caps lock works */
  87.                 break;
  88.         case 'A':    typebuff[index] = 2;
  89.                 break;
  90.         case 'C':    typebuff[index] = 3;
  91.                 break;
  92.         default:     break;
  93.         }
  94.     databuff[index] = val;
  95.     aplbuff[index] = apl;
  96.     rc = fgets(codeline, 128, infile);
  97.     lnum++;
  98.     index++;
  99.     }
  100. fprintf(namefile, "\t};");
  101. fclose(namefile);
  102.  
  103. outfile = fopen("kbtables.new", "w");
  104. if (outfile == 0) {
  105.     printf("Error creating kbtables.c\n");
  106.     return;
  107.     }
  108.  
  109. fputs("static unsigned char kbtyp[] = {\n",outfile);
  110. for (i=0; i < 256; i+= 8) {
  111.     strcpy(outline,"    ");
  112.     for (j=0; j < 8; j++) {
  113.         sprintf(hexbuff,"0x%02x,",typebuff[i+j]);
  114.         strcat(outline,hexbuff);
  115.         }
  116.     strcat(outline,"\n");
  117.     fputs(outline,outfile);
  118.     }
  119.  
  120. fputs("static unsigned char kbstd[] = {\n",outfile);
  121. for (i=0; i < 256; i+= 8) {
  122.     strcpy(outline,"    ");
  123.     for (j=0; j < 8; j++) {
  124.         sprintf(hexbuff,"0x%02x,",databuff[i+j]);
  125.         strcat(outline,hexbuff);
  126.         }
  127.     strcat(outline,"\n");
  128.     fputs(outline,outfile);
  129.     }
  130.  
  131. fputs("static unsigned char kbapl[] = {\n",outfile);
  132. for (i=0; i < 256; i+= 8) {
  133.     strcpy(outline,"    ");
  134.     for (j=0; j < 8; j++) {
  135.         sprintf(hexbuff,"0x%02x,",aplbuff[i+j]);
  136.         strcat(outline,hexbuff);
  137.         }
  138.     strcat(outline,"\n");
  139.     fputs(outline,outfile);
  140.     }
  141.  
  142. fclose(outfile);
  143. }
  144.